package tralala.server;

import java.rmi.RemoteException;
import java.io.*;

import sun.audio.*;

import java.rmi.server.UnicastRemoteObject;
import java.util.HashMap;
import java.util.List;

import es.deusto.ingenieria.sd.util.observer.remote.IRemoteObserver;
import es.deusto.ingenieria.sd.util.observer.remote.RemoteObservable;
import tralala.data.*;
import tralala.data.dto.CancionDTO;
import tralala.gateway.ConexionFacebook;
import tralala.jdo.ITralalaDAO;
import tralala.jdo.TralalaDAO;

public class TralalaService {
	
	private HashMap <String, Usuario> usuarios;
	private ITralalaDAO bd;
	public static Usuario usuarioCancion; 
	private int numeroDeUsuarios=0;

	//APPLICATION SERVICE
	public TralalaService() throws RemoteException
	{
		usuarios= new HashMap<String, Usuario>();
		bd=TralalaDAO.getInstance();
		
	}
	public synchronized boolean login(String u, String p) {
		System.out.println("EL LOGIN");
		/*ConexionFacebook cF= new ConexionFacebook();
		Usuario user=cF.login(u, p);*/
		Usuario user=null;
		user=bd.login(u, p);
		System.out.println("usuario: "+user);
		if(user!=null)
		{
		if(!user.getContrasena().equals(p))
		{
			System.out.println("ES FALSO");
		  return false;
		}
		else
		{
			System.out.println("ES CORRECTO");
			System.out.println(user.getNombre_usuario());
			usuarios.put(user.getNombre_usuario(), user);
			numeroDeUsuarios=usuarios.size();
			return true;
		}
		}
		else
		{
			return false;
		}
		
	}
	
	public synchronized void desconectarUsuario(String u)
	{
		usuarios.remove(u);
		numeroDeUsuarios--;
	}
	
	public synchronized List<Cancion> buscarCanciones(String s)
	{
		System.out.println("Buscar Cancion: Tralala Service");
		return bd.buscarCanciones(s);
		
	}
	
	public synchronized Cancion buscarCancion(String s, String u)
	{
		System.out.println("Seleccionar Cancion (buscarCancion): TralalaService: "+s);
		usuarioCancion=usuarios.get(u);
		return bd.buscarCancion(s);
		
	}
	

}
